package shutdown

import (
	"context"
)

// Hook 关闭钩子函数类型
type Hook func(ctx context.Context) error

// Manager 优雅关闭管理器
type Manager struct {
	hooks []Hook
}

// New 创建优雅关闭管理器实例
func New() *Manager {
	return &Manager{
		hooks: make([]Hook, 0),
	}
}

// RegisterHook 注册关闭钩子
func (m *Manager) RegisterHook(hook Hook) {
	m.hooks = append(m.hooks, hook)
}

// TODO: 实现信号监听
// TODO: 实现HTTP服务优雅关闭
// TODO: 实现数据库连接优雅关闭
// TODO: 实现Redis连接优雅关闭
// TODO: 实现其他资源优雅关闭
// TODO: 实现关闭超时控制
// TODO: 实现关闭日志记录
